通信器创建和管理函数
以下是由MCCL公开的API函数,用于创建和管理集体通信操作。
mcclGetLastError
const char* mcclGetLastError(mcclComm_t comm)
返回对应于 MCCL 中最后一次发生的错误的可读字符串。调用此函数不会清除错误。注意:mcclGetLastError 返回的字符串可能与当前调用无关,它也可能来自先前启动的异步操作的结果。
mcclGetErrorString
const char* mcclGetErrorString(mcclResult_t result)
返回对应于传递的错误代码的可读字符串。
mcclGetVersion
mcclResult_t mcclGetVersion(int* version)
mcclGetVersion 函数返回当前链接的MCCL库的版本号。存放于 version 指向的整数中。该整数按约定编码了 MCCL_MAJOR、MCCL_MINOR 和 MCCL_PATCH 三个字段。返回的版本号将与mccl.h中定义的MCCL_VERSION_CODE相同。MCCL版本号可以使用提供的宏进行比较;MCCL_VERSION(MAJOR,MINOR,PATCH)
mcclGetUniqueId
mcclResult_t mcclGetUniqueId(mcclUniqueId* uniqueId)
生成一个用于 mcclCommInitRank 的唯一 ID。创建通信器时,应先调用一次 mcclGetUniqueId 并将产生的 ID 分发给通信器中的所有 rank,然后再调用 mcclCommInitRank。uniqueId 应指向用户分配的 mcclUniqueId 对象。
mcclCommInitRank
mcclResult_t mcclCommInitRank(mcclComm_t* comm, int nranks, mcclUniqueId commId, int rank)
创建一个新的通信器(多线程/进程版本)。rank 必须在 0 和 nranks - 1 之间,并且在通信器域内是唯一的。每个 rank 都与一个MUSA设备关联,必须在调用mcclCommInitRank之前设置。mcclCommInitRank隐式地与其他 rank 同步,因此必须由不同的线程/进程调用,或在mcclGroupStart/mcclGroupEnd内使用。
mcclCommInitAll
mcclResult_t mcclCommInitAll(mcclComm_t* comms, int ndev, const int* devlist)
以阻塞方式创建一组通信器(单进程版本)。这是一个用于创建单进程通信器集合的便捷函数。函数在 comms 中返回一个包含 ndev 个新初始化通信器的数组。comms应预分配大小至少为 ndev * sizeof(mcclComm_t)。devlist 定义了与每个 rank 关联的MUSA设备。如果 devlist 为 NULL ,则按顺序使用前 ndev 个 MUSA 设备。